/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ws.converter;

import entidade.persistencia.CategoriaProduto;
import java.net.URI;
import java.util.Collection;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlAttribute;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author victorinox
 */

@XmlRootElement(name = "categoriaProdutoes")
public class CategoriaProdutoesConverter {
    private List<CategoriaProduto> entities;
    private List<CategoriaProdutoConverter> items;
    private URI uri;
    private int expandLevel;
  
    /** Creates a new instance of CategoriaProdutoesConverter */
    public CategoriaProdutoesConverter() {
    }

    /**
     * Creates a new instance of CategoriaProdutoesConverter.
     *
     * @param entities associated entities
     * @param uri associated uri
     * @param expandLevel indicates the number of levels the entity graph should be expanded
     */
    public CategoriaProdutoesConverter(List<CategoriaProduto> entities, URI uri, int expandLevel) {
        this.entities = entities;
        this.uri = uri;
        this.expandLevel = expandLevel;
        getCategoriaProduto();
    }

    /**
     * Returns a collection of CategoriaProdutoConverter.
     *
     * @return a collection of CategoriaProdutoConverter
     */
    @XmlElement
    public List<CategoriaProdutoConverter> getCategoriaProduto() {
        if (items == null) {
            items = new ArrayList<CategoriaProdutoConverter>();
        }
        if (entities != null) {
            for (CategoriaProduto entity : entities) {
                items.add(new CategoriaProdutoConverter(entity, uri, expandLevel, true));
            }
        }
        return items;
    }

    /**
     * Sets a collection of CategoriaProdutoConverter.
     *
     * @param a collection of CategoriaProdutoConverter to set
     */
    public void setCategoriaProduto(List<CategoriaProdutoConverter> items) {
        this.items = items;
    }

    /**
     * Returns the URI associated with this converter.
     *
     * @return the uri
     */
    @XmlAttribute
    public URI getUri() {
        return uri;
    }

    /**
     * Returns a collection CategoriaProduto entities.
     *
     * @return a collection of CategoriaProduto entities
     */
    @XmlTransient
    public List<CategoriaProduto> getEntities() {
        entities = new ArrayList<CategoriaProduto>();
        if (items != null) {
            for (CategoriaProdutoConverter item : items) {
                entities.add(item.getEntity());
            }
        }
        return entities;
    }
}
